package org.novaacropole.envio;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import lombok.Getter;
import lombok.Setter;

import org.novaacropole.email.Email;
import org.novaacropole.grupo.Grupo;
import org.novaacropole.mensagem.Mensagem;
import org.novaacropole.util.MB;
import org.novaacropole.util.PegasusException;

@SuppressWarnings("serial")
@ViewScoped
@ManagedBean
public class EnvioMB extends MB {

	@Getter
	@Setter
	List<String> selectedItems;

	@PostConstruct
	public void pageLoad() {
		mensagem = new Mensagem();
		selectedItems = new ArrayList<String>();
		grupos = Grupo.findAll();
		mensagens = Mensagem.findAll();
	}

	public void enviar() throws Exception {
		Mensagem mensagemTemp = Mensagem.findById(mensagem.getId());
		if (selectedItems.size() == 0)
			throw new PegasusException("Selecione pelo menos um grupo");
		if (mensagemTemp == null)
			throw new PegasusException("Selecione pelo menos uma mensagem");
		for (String grupoId : selectedItems) {
			grupo = Grupo.findByIdWithEmails(Integer.parseInt(grupoId));
			for (Email email : grupo.getEmails()) {
				Envio envio = new Envio(email, mensagemTemp);
				envio.save();
			}
		}
	}

}
